#!/system/bin/sh
#*******************************#
#         Geeky Engine          #
#         -------------         #
#      By Forever king@ xda     #
#-------------------------------#


# Remount all partitions with noatime
for k in $(busybox mount | grep relatime | cut -d " " -f3) ; do
	sync
	busybox mount -o remount,noatime $k
done

# One-time tweaks to apply on every boot
STL=`ls -d /sys/block/stl*`
BML=`ls -d /sys/block/bml*`
MMC=`ls -d /sys/block/mmc*`

# Tweak deadline io scheduler
for i in $STL $BML $MMC $TFSR; do
	echo 0 > $i/queue/rotational
	echo 1 > $i/queue/iosched/low_latency
	echo 1 > $i/queue/iosched/back_seek_penalty
	echo 1000000000 > $i/queue/iosched/back_seek_max
	echo 3 > $i/queue/iosched/slice_idle
	echo 16 > $i/queue/iosched/quantum
	echo 1 > $i/queue/iosched/fifo_batch
	echo deadline > $i/queue/scheduler
done


echo 0 > /proc/sys/vm/swappiness
echo 10 > /proc/sys/vm/dirty_ratio
echo 4096 > /proc/sys/vm/min_free_kbytes

echo 20000000 > /proc/sys/kernel/sched_latency_ns
echo 2500000 > /proc/sys/kernel/sched_wakeup_granularity_ns
echo 1000000 > /proc/sys/kernel/sched_min_granularity_ns

# Battery TweaKs
echo "2000" > /proc/sys/vm/dirty_writeback_centisecs
echo "1000" > /proc/sys/vm/dirty_expire_centisecs

# SD card Read-ahead set to 2048kb instead of default 128kb
if [ -e /sys/devices/virtual/bdi/179:0/read_ahead_kb ]; then
	/system/xbin/echo "2048" > /sys/devices/virtual/bdi/179:0/read_ahead_kb;
fi

# Prop tweaks
setprop ro.telephony.call_ring.delay 1000
setprop ro.ril.disable.power.collapse 0
setprop pm.sleep_mode 1
setprop dalvik.vm.startheapsize 48m
setprop wifi.supplicant_scan_interval 180
setprop windowsmgr.max_events_per_sec 55

busybox mount -o remount,rw -t rootfs /
sh /system/bin/userinit.sh

#!/system/bin/sh

#Net
echo 0 > /proc/sys/net/ipv4/tcp_timestamps;
echo 0 > /proc/sys/net/ipv4/tcp_tw_recycle;
echo 1 > /proc/sys/net/ipv4/tcp_tw_reuse;
echo 1 > /proc/sys/net/ipv4/tcp_sack;
echo 1 > /proc/sys/net/ipv4/tcp_window_scaling;
echo 5 > /proc/sys/net/ipv4/tcp_keepalive_probes;
echo 20 > /proc/sys/net/ipv4/tcp_keepalive_intvl;
echo 1800 > /proc/sys/net/ipv4/tcp_keepalive_time;
echo 30 > /proc/sys/net/ipv4/tcp_fin_timeout;
echo 404480 > /proc/sys/net/core/wmem_max;
echo 404480 > /proc/sys/net/core/rmem_max;
echo 256960 > /proc/sys/net/core/rmem_default;
echo 256960 > /proc/sys/net/core/wmem_default;
echo 4096 16384 404480 > /proc/sys/net/ipv4/tcp_wmem;
echo 4096 87380 404480 > /proc/sys/net/ipv4/tcp_rmem;


#battery tweaks 
mount -t debugfs none /sys/kernel/debug
echo NO_NEW_FAIR_SLEEPERS > /sys/kernel/debug/sched_features;
echo NO_NORMALIZED_SLEEPERS > /sys/kernel/debug/sched_features;
umount /sys/kernel/debug


;

#default value for /proc/sys/vm/min_free_kbytes
# RAM		min_free_kbytes
# 16MB		512k
# 32MB		724k
# 64MB		1024k
# 128MB		1448k
# 256MB		2048k
# 512MB		2896k
# 1024MB	4096k
# 2048MB	5792k
# 4096MB	8192k
# 8192MB	11584k


#kernel tweakz
#echo 1 > /proc/sys/kernel/panic_on_oops;
#echo 60 > /proc/sys/kernel/panic;
echo 0 > /proc/sys/kernel/panic_on_oops;
echo 30 > /proc/sys/fs/lease-break-time;
#echo 64000 > /proc/sys/kernel/msgmni; #1024
#echo 64000 > /proc/sys/kernel/msgmax;
#echo 1000000 > /proc/sys/kernel/sched_rt_period_us;
#echo 950000 > /proc/sys/kernel/sched_rt_runtime_us;
echo 500 512000 64 2048 > /proc/sys/kernel/sem;

if [ -e /proc/sys/kernel/sched_min_granularity_ns ]
then
	echo 200000 > /proc/sys/kernel/sched_min_granularity_ns;
fi

if [ -e /proc/sys/kernel/sched_latency_ns ]
then
	echo 400000 > /proc/sys/kernel/sched_latency_ns;
fi

if [ -e /proc/sys/kernel/sched_wakeup_granularity_ns ]
then
	echo 100000 > /proc/sys/kernel/sched_wakeup_granularity_ns;
fi

if [ -e /proc/sys/kernel/hung_task_timeout_secs ]
then
	echo 45 > /proc/sys/kernel/hung_task_timeout_secs;s
#(busybox expr `cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_transition_latency` \* 750 / 1000);
#echo $SAMPLING_RATE > /sys/devices/system/cpu/cpu0/cpufreq/ondemand/sampling_rate;
#echo 10000 > /sys/devices/system/cpu/cpu0/cpufreq/ondemand/sampling_rate;
echo 70 > /sys/devices/system/cpu/cpu0/cpufreq/ondemand/up_threshold;


#optimize build.prop
#setprop ro.ril.hsxpa 2; #HSDPA/UMTS? I think this one gonna drain more and more battery
#setprop ro.ril.hsxpa 1; #HSDPA only? hmm I think this one drain more battery than UMTS only
setprop ro.ril.hsxpa 0; #UMTS only? slower but I think this one drain less battery
setprop ro.ril.gprsclass 10;
setprop ro.ril.hsupa.category 6;
setprop ro.ril.hsdpa.category 8;
setprop ro.ril.hep 1;
setprop ro.ril.enable.dtm 1;
setprop ro.ril.enable.a53 1;
setprop ro.ril.enable.3g.prefix 1;
setprop keyguard.no_require_sim true;
setprop net.tcp.buffersize.default 4096,87380,256960,4096,16384,256960;
setprop net.tcp.buffersize.wifi 4096,87380,256960,4096,16384,256960;
setprop net.tcp.buffersize.umts 4096,87380,256960,4096,16384,256960;
setprop net.tcp.buffersize.edge 4096,87380,256960,4096,16384,256960;
setprop net.tcp.buffersize.gprs 4096,87380,256960,4096,16384,256960;

setprop windowsmgr.support_rotation_270 true;
setprop ro.mot.eri.losalert.delay 1000;
setprop ro.lge.proximity.delay 25;
setprop mot.proximity.delay 25;
setprop persist.sys.use_dithering 0;
setprop persist.sys.purgeable_assets 1;
setprop ro.media.dec.jpeg.memcap 20000000;
setprop ro.media.enc.jpeg.quality 100;
setprop ro.HOME_APP_ADJ 1;
setprop ro.HOME_APP_MEM 2048;
;
setprop video.accelerate.hw 1;
setprop media.stagefright.enable-player true;
setprop ro.ril.disable.power.collapse 0;
setprop persist.adb.notify 0;
setprop pm.sleep_mode 1;
setprop debug.sf.hw 1;
setprop debug.performance.tuning 1;
setprop dalvik.vm.execution-mode int:jit
#untested
#setprop ro.kernel.android.checkjni 0; 
#setprop ro.mot.buttonlight.timeout 0; 

#!/system/bin/sh
if [ -e /sys/devices/virtual/bdi/179:0/read_ahead_kb ]
  then
    /system/xbin/echo "8192" > /sys/devices/virtual/bdi/179:0/read_ahead_kb;
fi;

if [ -e /sys/devices/virtual/bdi/default/read_ahead_kb ]
  then
    /system/xbin/echo "128" > /sys/devices/virtual/bdi/default/read_ahead_kb;
fi; 

echo "0" > /proc/sys/vm/swappiness;

echo "3" > /proc/sys/vm/page-cluster;

echo "10" > /proc/sys/vm/vfs_cache_pressure; 

echo "2000" > /proc/sys/vm/dirty_writeback_centisecs;

echo "1000" > /proc/sys/vm/dirty_expire_centisecs; 

echo "0" > /proc/sys/vm/laptop_mode; 
echo "90" > /proc/sys/vm/dirty_ratio; 
echo "85" > /proc/sys/vm/dirty_background_ratio;  

echo "0" > /proc/sys/vm/oom_kill_allocating_task;  
echo "8" > /proc/sys/vm/page-cluster; 
echo "2048" > /proc/sys/vm/vm.min_free_kbytes; 
echo "10" > /proc/sys/fs/lease-break-time;
echo "0" > /proc/sys/vm/panic_on_oom; 
echo "64000" > /proc/sys/kernel/msgmni;
echo "64000" > /proc/sys/kernel/msgmax;
echo "10" > /proc/sys/fs/lease-break-time;

  




#dalvik.vm.lockprof.threshold 200
setprop dalvik.vm.startheapsize 32
setprop debug.sf.hw 1
setprop debug.sf.nobootanimation 1
setprop pm.sleep_mode 1
setprop ro.ril.disable.power.collapse 0
setprop debug.performance.tuning 1
setprop video.accelerate.hw 1setprop ro.telephony.call_ring.delay 0setprop media.stagefright.enable-player truesetprop media.stagefright.enable-player truesetprop 
media.stagefright.enable-rtsp true

setprop media.stagefright.enable-record truesetprop media.stagefright.enable-scan truesetprop 
media.stagefright.enable-http truesetprop 
media.stagefright.enable-meta true
 

  
#!/system/bin/sh
# Copyright 2011 XtremePeople

echo "0,3,5,7,14,15" > /sys/module/lowmemorykiller/parameters/adj
echo "2560,4096,6144,15360,17920,20480" > /sys/module/lowmemorykiller/parameters/minfree
echo "0" > /proc/sys/kernel/panic
echo "0" > /proc/sys/vm/oom_kill_allocating_task
echo "0" > /proc/sys/vm/panic_on_oom
echo "1" > /proc/sys/kernel/panic_on_oops
echo "0" > /proc/sys/kernel/panic

echo "0" > /proc/sys/net/ipv4/tcp_timestamps;
echo "1" > /proc/sys/net/ipv4/tcp_tw_reuse;
echo "1" > /proc/sys/net/ipv4/tcp_sack;
echo "1" > /proc/sys/net/ipv4/tcp_tw_recycle;
echo "1" > /proc/sys/net/ipv4/tcp_window_scaling;
echo "5" > /proc/sys/net/ipv4/tcp_keepalive_probes;
echo "30" > /proc/sys/net/ipv4/tcp_keepalive_intvl;
echo "30" > /proc/sys/net/ipv4/tcp_fin_timeout;
echo "404480" > /proc/sys/net/core/wmem_max;
echo "404480" > /proc/sys/net/core/rmem_max;
echo "256960" > /proc/sys/net/core/rmem_default;
echo "256960" > /proc/sys/net/core/wmem_default;
echo "4096,16384,404480" > /proc/sys/net/ipv4/tcp_wmem;
echo "4096,87380,404480" > /proc/sys/net/ipv4/tcp_rmem;

echo "4096" > /proc/sys/vm/min_free_kbytes
echo "0" > /proc/sys/vm/oom_kill_allocating_task;
echo "0" > /proc/sys/vm/panic_on_oom;
echo "0" > /proc/sys/vm/laptop_mode;
echo "0" > /proc/sys/vm/swappiness
echo "50" > /proc/sys/vm/vfs_cache_pressure
echo "90" > /proc/sys/vm/dirty_ratio
echo "70" > /proc/sys/vm/dirty_background_ratio

echo "500" > /proc/sys/vm/dirty_expire_centisecs
echo "1000" > /proc/sys/vm/dirty_writeback_centisecs

#!/system/bin/sh

echo "";
if [ ! "`id | grep =0`" ]; then
	echo " You are NOT running this script as root...";
	echo "";
	echo "                      ...No SuperUser for you!!";
	echo "";
	echo "     ...Please Run as Root and try again...";
	echo "";
	exit 69;
fi;
busybox mount -o remount,rw /system 2>/dev/null;
for m in /dev/block/mtdblock*;
do
busybox mount -o remount,rw $m /system 2>/dev/null;
done;
busybox sysctl -p;
#
# Disable normalized sleeper
#
busybox mount -t debugfs none /sys/kernel/debug 2>/dev/null;
echo NO_NORMALIZED_SLEEPER > /sys/kernel/debug/sched_features 2>/dev/null;
busybox umount /sys/kernel/debug;

busybox sysctl -e -w vm.oom_kill_allocating_task=0;
busybox sysctl -e -w vm.panic_on_oom=0;
busybox sysctl -e -w vm.dirty_background_ratio=50;
busybox sysctl -e -w vm.dirty_ratio=70;
busybox sysctl -e -w vm.min_free_kbytes=4096;
busybox sysctl -e -w vm.vfs_cache_pressure=50;
busybox sysctl -e -w vm.overcommit_memory=1;
busybox sysctl -e -w vm.min_free_order_shift=4;
busybox sysctl -e -w vm.laptop_mode=0;
busybox sysctl -e -w vm.block_dump=0;

#
busybox sysctl -e -w vm.dirty_writeback_centisecs=2000;
busybox sysctl -e -w vm.dirty_expire_centisecs=1000;
#
busybox sysctl -e -w kernel.panic=0;
busybox sysctl -e -w kernel.panic_on_oops=1;
busybox sysctl -e -w kernel.msgmni=2048;
busybox sysctl -e -w kernel.msgmax=64000;
busybox sysctl -e -w kernel.shmmni=4096;
busybox sysctl -e -w kernel.shmall=2097152;
busybox sysctl -e -w kernel.shmmax=268435456;
busybox sysctl -e -w kernel.sem='500 512000 64 2048';
busybox sysctl -e -w kernel.sched_features=24189;
busybox sysctl -e -w kernel.hung_task_timeout_secs=30;             # Set to 0 to disable but can cause black screen on incoming calls
busybox sysctl -e -w kernel.sched_latency_ns=18000000;
busybox sysctl -e -w kernel.sched_min_granularity_ns=1500000;
busybox sysctl -e -w kernel.sched_wakeup_granularity_ns=3000000;
busybox sysctl -e -w kernel.sched_compat_yield=1;
busybox sysctl -e -w kernel.sched_shares_ratelimit=256000;
busybox sysctl -e -w kernel.sched_child_runs_first=0;
busybox sysctl -e -w kernel.threads-max=5000;
busybox sysctl -e -w fs.lease-break-time=10;
busybox sysctl -e -w fs.file-max=65536;
#
# Queue size mods
busybox sysctl -e -w net.core.wmem_max=524288;
busybox sysctl -e -w net.core.rmem_max=524288;
busybox sysctl -e -w net.core.rmem_default=262144;
busybox sysctl -e -w net.core.wmem_default=262144;
busybox sysctl -e -w net.core.optmem_max=20480;
busybox sysctl -e -w net.unix.max_dgram_qlen=50;
#
busybox sysctl -e -w net.ipv4.udp_rmem_min=6144;
busybox sysctl -e -w net.ipv4.udp_wmem_min=6144;
busybox sysctl -e -w net.ipv4.tcp_rfc1337=1;
busybox sysctl -e -w net.ipv4.ip_no_pmtu_disc=0;
busybox sysctl -e -w net.ipv4.tcp_ecn=0;
busybox sysctl -e -w net.ipv4.route.flush=1;
busybox sysctl -e -w net.ipv4.tcp_rmem='6144 87380 524288';
busybox sysctl -e -w net.ipv4.tcp_wmem='6144 87380 524288';
#
# From http://www.speedguide.net/articles/linux-tweaking-121
busybox sysctl -e -w net.ipv4.tcp_timestamps=0;
busybox sysctl -e -w net.ipv4.tcp_sack=1;
busybox sysctl -e -w net.ipv4.tcp_fack=1;
busybox sysctl -e -w net.ipv4.tcp_window_scaling=1;
#
# Re-use sockets in time-wait state
busybox sysctl -e -w net.ipv4.tcp_tw_recycle=1;
busybox sysctl -e -w net.ipv4.tcp_tw_reuse=1;
#
#
busybox sysctl -e -w net.ipv4.tcp_congestion_control=cubic;        # Change network congestion algorithm to CUBIC
#
# Hardening the TCP/IP stack to SYN attacks
# See http://www.symantec.com/connect/articles/hardening-tcpip-stack-syn-attacks
busybox sysctl -e -w net.ipv4.tcp_syncookies=1;
busybox sysctl -e -w net.ipv4.conf.all.rp_filter=1;
busybox sysctl -e -w net.ipv4.conf.default.rp_filter=1;
busybox sysctl -e -w net.ipv4.tcp_synack_retries=2;
busybox sysctl -e -w net.ipv4.tcp_syn_retries=2;
busybox sysctl -e -w net.ipv4.tcp_max_syn_backlog=1024;
#
busybox sysctl -e -w net.ipv4.tcp_max_tw_buckets=16384;            # Bump up tw_buckets in case we get DoS'd
busybox sysctl -e -w net.ipv4.icmp_echo_ignore_all=1;              # Ignore pings
busybox sysctl -e -w net.ipv4.icmp_ignore_bogus_error_responses=1; # Enable bad error message protection (should be enabled by default)
busybox sysctl -e -w net.ipv4.tcp_no_metrics_save=1;               # Don't cache ssthresh from previous connection
busybox sysctl -e -w net.ipv4.tcp_fin_timeout=15;
busybox sysctl -e -w net.ipv4.tcp_keepalive_intvl=30;
busybox sysctl -e -w net.ipv4.tcp_keepalive_probes=5;
busybox sysctl -e -w net.ipv4.tcp_keepalive_time=1800;
busybox sysctl -e -w net.ipv4.ip_forward=0;                        # Disable IP Packet forwarding (should be disabled already)
#
# Don't accept source routing
busybox sysctl -e -w net.ipv4.conf.default.accept_source_route=0 ;
busybox sysctl -e -w net.ipv4.conf.all.accept_source_route=0;
#
# Don't accept redirects
busybox sysctl -e -w net.ipv4.conf.all.accept_redirects=0;
busybox sysctl -e -w net.ipv4.conf.default.accept_redirects=0;
busybox sysctl -e -w net.ipv4.conf.all.secure_redirects=0;
busybox sysctl -e -w net.ipv4.conf.default.secure_redirects=0;
# End of KickAss Underutilized Networking Tweaks lulz
#
# Remount with noatime and nodiratime
#
for k in $(busybox mount | cut -d " " -f3);
do
busybox sync;
busybox mount -o remount,noatime $k 2>/dev/null;
done;
busybox mount -o remount,ro /system 2>/dev/null;
for m in /dev/block/mtdblock*;
do
busybox mount -o remount,ro $m /system 2>/dev/null;
done;

#!/system/bin/sh

STL=`ls -d /sys/block/stl*`;
BML=`ls -d /sys/block/bml*`;
MMC=`ls -d /sys/block/mmc*`;
ZRM=`ls -d /sys/block/zram*`;

# set the cfq scheduler as default i/o scheduler (Samsung ROMs)
#for i in $STL $BML $MMC;
#do
#	echo "noop" > $i/queue/scheduler; 
#done;

# Optimize non-rotating storage; 
for i in $STL $BML $MMC $ZRM;
do
	#IMPORTANT!
	if [ -e $i/queue/rotational ]; 
	then
		echo 0 > $i/queue/rotational; 
	fi;
	if [ -e $i/queue/nr_requests ];
	then
		echo 8192 > $i/queue/nr_requests; # for starters: keep it sane
	fi;
	#CFQ specific
	if [ -e $i/queue/iosched/back_seek_penalty ];
	then 
		echo 1 > $i/queue/iosched/back_seek_penalty;
	fi;
	#CFQ specific
	if [ -e $i/queue/iosched/low_latency ];
	then
		echo 1 > $i/queue/iosched/low_latency;
	fi;
	#CFQ Specific
	if [ -e $i/queue/iosched/slice_idle ];
	then 
		echo 0 > $i/queue/iosched/slice_idle; # previous: 1
	fi;
	# deadline/VR/SIO scheduler specific
	if [ -e $i/queue/iosched/fifo_batch ];
	then
		echo 1 > $i/queue/iosched/fifo_batch;
	fi;
	if [ -e $i/queue/iosched/writes_starved ];
	then
		echo 1 > $i/queue/iosched/writes_starved;
	fi;
	#CFQ specific
	if [ -e $i/queue/iosched/quantum ];
	then
		echo 8 > $i/queue/iosched/quantum;
	fi;
	#VR Specific
	if [ -e $i/queue/iosched/rev_penalty ];
	then
		echo 1 > $i/queue/iosched/rev_penalty;
	fi;
	if [ -e $i/queue/rq_affinity ];
	then
	echo "1"   >  $i/queue/rq_affinity;   
	fi;
done;


for k in $STL $BML $MMC $ZRM;
do
	if [ -e $i/queue/iostats ];
	then
		echo "0" > $k/queue/iostats;
	fi;
done;

# Remount all partitions with noatime
for k in $(busybox mount | grep relatime | cut -d " " -f3);



do
sync;
busybox mount -o remount,noatime $k;
done;



for i in $STL $BML $MMC $ZRM; 
do
	if [ -e $i/queue/read_ahead_kb ];
	then
		echo "256" >  $i/queue/read_ahead_kb; # yes - I know - this is evil ^^, might help with battery runtime still (in certain workloads)
	fi;
                                     
done;
##         /bin/echo "0"   >  $i/queue/nomerges
#          echo "128" >  $i/queue/max_sectors_kb




if [ -e /sys/devices/virtual/bdi/179:0/read_ahead_kb ];
then
    /system/xbin/echo "1024" > /sys/devices/virtual/bdi/179:0/read_ahead_kb;
fi;
	
if [ -e /sys/devices/virtual/bdi/179:8/read_ahead_kb ];
  then
    /system/xbin/echo "1024" > /sys/devices/virtual/bdi/179:8/read_ahead_kb;
fi;

if [ -e /sys/devices/virtual/bdi/179:28/read_ahead_kb ];
  then
    /system/xbin/echo "1024" > /sys/devices/virtual/bdi/179:28/read_ahead_kb;
fi;

if [ -e /sys/devices/virtual/bdi/179:33/read_ahead_kb ];
  then
    /system/xbin/echo "1024" > /sys/devices/virtual/bdi/179:33/read_ahead_kb;
fi;

if [ -e /sys/devices/virtual/bdi/default/read_ahead_kb ];
  then
    /system/xbin/echo "256" > /sys/devices/virtual/bdi/default/read_ahead_kb;
fi;



#echo 0 > /proc/sys/vm/swappiness # 70 for zram, Talon 
#echo 3 > /proc/sys/vm/page-cluster # when swapping then hesitate to swap out pages & pull them in again in a fast manner

#echo 20 > /proc/sys/vm/vfs_cache_pressure; # 100 while screen off # 200 # 50
#echo 50 > /proc/sys/vm/vfs_cache_pressure; # same value for both: screen on & off - needs some testing due to RAM filling and OOM killer triggering # 20 (on talon)

# make sure we don't use laptop-mode
#echo 0 > /proc/sys/vm/laptop_mode;


		sysctl -w vm.page-cluster=3;
		sysctl -w vm.laptop_mode=0;
		sysctl -w vm.dirty_expire_centisecs=3000;
		sysctl -w vm.dirty_expire_centisecs=500;
		sysctl -w vm.dirty_background_ratio=65;
		sysctl -w vm.dirty_ratio=80;
		sysctl -w vm.vfs_cache_pressure=1;
		sysctl -w vm.overcommit_memory=1;
		sysctl -w vm.oom_kill_allocating_task=0;
		sysctl -w vm.panic_on_oom=0;
		sysctl -w kernel.panic_on_oops=1;
		sysctl -w kernel.panic=0;

		#echo 3 > /proc/sys/vm/page-cluster; # 12
		#echo 0 > /proc/sys/vm/laptop_mode; # do not omit syncing
		#echo 3000 > /proc/sys/vm/dirty_expire_centisecs; # 2000 # 700 is long enough [stability testing]
		#echo 500 > /proc/sys/vm/dirty_writeback_centisecs; # 1000 # 500 is long enough [stability testing]
		#echo 65 > /proc/sys/vm/dirty_background_ratio; # 15 # 10 # 50 #10 #55
		#echo 80 > /proc/sys/vm/dirty_ratio; # 40 # 90
		#echo 1 > /proc/sys/vm/vfs_cache_pressure; # 100 while screen off # 200 # 50 # 20 [less reclaim] #
		#echo 1 > /proc/sys/vm/overcommit_memory;
		#echo 0 > /proc/sys/vm/oom_kill_allocating_task;
		#echo 0 > /proc/sys/vm/panic_on_oom;
		#echo 1 > /proc/sys/kernel/panic_on_oops;
		#echo 0 > /proc/sys/kernel/panic;




#insmod /system/modules/zram.ko num_devices=1
#echo $((96*1024*1024)) > /sys/block/zram0/disksize
#mknod /dev/zram0 b 253 0
#mkswap /dev/zram0
#swapon /dev/zram0


sysctl -w net.ipv4.tcp_timestamps=0;
sysctl -w net.ipv4.tcp_tw_reuse=1;
sysctl -w net.ipv4.tcp_sack=1;
sysctl -w net.ipv4.tcp_dsack=1;
sysctl -w net.ipv4.tcp_tw_recycle=1;
sysctl -w net.ipv4.tcp_window_scaling=1;
sysctl -w net.ipv4.tcp_keepalive_probes=5;
sysctl -w net.ipv4.tcp_keepalive_intvl=30;
sysctl -w net.ipv4.tcp_fin_timeout=30;
#echo 0 > /proc/sys/net/ipv4/tcp_timestamps;
#echo 1 > /proc/sys/net/ipv4/tcp_tw_reuse;
#echo 1 > /proc/sys/net/ipv4/tcp_sack;
#echo 1 > /proc/sys/net/ipv4/tcp_dsack;
#echo 1 > /proc/sys/net/ipv4/tcp_tw_recycle;
#echo 1 > /proc/sys/net/ipv4/tcp_window_scaling;
#echo 5 > /proc/sys/net/ipv4/tcp_keepalive_probes;
#echo 30 > /proc/sys/net/ipv4/tcp_keepalive_intvl;
#echo 30 > /proc/sys/net/ipv4/tcp_fin_timeout;
#echo 524288 > /proc/sys/net/core/wmem_max;
#echo 524288 > /proc/sys/net/core/rmem_max;


# increase Linux auto tuning TCP buffer limits
# min, default, and max number of bytes to use
# set max to at least 4MB, or higher if you use very high BDP paths
#echo "524280" > /proc/sys/net/core/rmem_default # default: 
#echo "524280" > /proc/sys/net/core/wmem_default # default: 
# Increase the maximum total TCP buffer-space allocatable
#sysctl -w net.ipv4.tcp_mem="57344 57344 524288";

sysctl -w net.ipv4.tcp_moderate_rcvbuf=1;
#echo 1 > /proc/sys/net/ipv4/tcp_moderate_rcvbuf # enabled by default
# removes an odd behavior in the 2.6 kernels, whereby the kernel stores the slow start threshold for a client between TCP sessions. This can cause undesired results, as a single period of congestion can affect many subsequent connections.

#echo 256960 > /proc/sys/net/core/rmem_default;
#echo 256960 > /proc/sys/net/core/wmem_default;
#echo 4096 16384 404480 > /proc/sys/net/ipv4/tcp_wmem;
#echo 4096 87380 404480 > /proc/sys/net/ipv4/tcp_rmem;
#setprop net.tcp.buffersize.default 4096,87380,256960,4096,16384,256960;
#setprop net.tcp.buffersize.wifi 4095,87380,256960,4096,16384,256960;
#setprop net.tcp.buffersize.umts 4094,87380,256960,4096,16384,256960;
#setprop net.tcp.buffersize.gprs 4094,87380,256960,4096,16384,256960;
#setprop net.tcp.buffersize.edge 4094,87380,256960,4096,16384,256960;


# Increase the tcp-time-wait buckets pool size
#sysctl -w net.ipv4.tcp_max_tw_buckets="1440000"
# default: 180000

# Increase the maximum amount of option memory buffers
#sysctl -w net.core.optmem_max="57344"
# default: 20480

# disable ECN
# enable it - since it's needed for SFB to work properly/optimally
# echo "0" > /proc/sys/net/ipv4/tcp_ecn # default at 2
# explicitly disable it since there's still buggy routers and other stations involved that break networking



#for i in /proc/sys/net/ipv4/conf/*; do
#         /bin/echo "0" >  $i/accept_source_route
#done # does not get applied - FIXME

## echo "1" > /proc/sys/net/ipv4/conf/all/accept_source_route ## fix wifi, networking issues # leave at default


#for i in /proc/sys/net/ipv6/conf/*; do
#         /bin/echo "0" >  $i/accept_source_route
#done # does not get applied - FIXME

## echo "1" > /proc/sys/net/ipv6/conf/all/accept_source_route ## fix wifi, networking issues # leave at default

# These commands configure the server to ignore redirects from machines that are listed as
# gateways. Redirect can be used to perform attacks, so we only want to allow them from
# trusted sources:

#for i in /proc/sys/net/ipv4/conf/*; do
#         /bin/echo "1" >  $i/secure_redirects
#done

## echo "0" > /proc/sys/net/ipv4/conf/all/secure_redirects ## fix wifi, networking issues # leave at default

#for i in /proc/sys/net/ipv6/conf/*; do
#         /bin/echo "1" >  $i/secure_redirects
#done

# disables IP redirects (for ipv4)
#for i in /proc/sys/net/ipv4/conf/*; do
#         /bin/echo "0" >  $i/accept_redirects
#done # does not get applied - FIXME

# echo "1" > /proc/sys/net/ipv4/conf/all/accept_redirects ## fix wifi, networking issues # leave at default

#for i in /proc/sys/net/ipv6/conf/*; do
#         /bin/echo "0" >  $i/accept_redirects
#done # does not get applied - FIXME

# echo "1" > /proc/sys/net/ipv6/conf/all/accept_redirects ## fix wifi, networking issues # leave at default

# If this server does not act as a router, it does not have to send redirects, so they can be
# disabled:

#for i in /proc/sys/net/ipv4/conf/*; do
#         /bin/echo "0" >  $i/send_redirects
#done # does not get applied - FIXME

# echo "1" > /proc/sys/net/ipv4/conf/all/send_redirects ## fix wifi, networking issues # # leave at default

# Configure the server to ignore broadcast pings and smurf attacks:
# (smurf-attacks)
sysctl -w net.ipv4.icmp_echo_ignore_broadcasts=1;

#echo "1" >  /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts; # default
if [ -e /proc/sys/net/ipv6/icmp_echo_ignore_broadcasts ]
then
	echo "1" >  /proc/sys/net/ipv6/icmp_echo_ignore_broadcasts; # default
fi;

sysctl -w net.ipv4.icmp_echo_ignore_all=1;
#echo "1" >  /proc/sys/net/ipv4/icmp_echo_ignore_all; # default: 0

if [ -e /proc/sys/net/ipv6/icmp_echo_ignore_all ]
then
	echo "1" >  /proc/sys/net/ipv6/icmp_echo_ignore_all; # default: 0
fi;
# Some routers send invalid responses to broadcast frames, and each one generates a
# warning that is logged by the kernel. These responses can be ignored:
sysctl -w net.ipv4.icmp_ignore_bogus_error_responses=1;
#echo "1" >  /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses;

if [ -e /proc/sys/net/ipv6/icmp_ignore_bogus_error_responses ]
then
	echo "1" >  /proc/sys/net/ipv6/icmp_ignore_bogus_error_responses;
fi;
# When the server is heavily loaded or has many clients with bad connections with high
# latency, it can result in an increase in half-open connections. This is common for Web
# servers, especially when there are a lot of dial-up users. These half-open connections are
# stored in the backlog connections queue. You should set this value to at least 4096. (The
# default is 1024.)
# Setting this value is useful even if your server does not receive this kind of connection,
# because it can still be protected from a DoS (syn-flood) attack.
sysctl -w net.ipv4.tcp_max_syn_backlog=4096;
#echo 4096 > /proc/sys/net/ipv4/tcp_max_syn_backlog; # default: 128

#echo 2 > /proc/sys/net/ipv4/tcp_synack_retries; # default: 5

# Increase the number of outstanding syn requests allowed.
# Note: some people (including myself) have used tcp_syncookies to handle the problem of too many legitimate outstanding SYNs. 
sysctl -w net.core.netdev_max_backlog=2500;

#echo "2500" > /proc/sys/net/core/netdev_max_backlog; # default: 1000
#echo "1" > /proc/sys/net/ipv4/tcp_window_scaling; # default

# While TCP SYN cookies are helpful in protecting the server from syn-flood attacks, both
# denial-of-service (DoS) or distributed denial-of-service (DDoS), they could have an
# adverse effect on performance. We suggest enabling TCP SYN cookies only when there is
# a clear need for them.

# enabling syncookies
sysctl -w net.ipv4.tcp_syncookies=1;

#if [ -e /proc/sys/net/ipv4/tcp_syncookies ]
#then
#	echo "1" >  /proc/sys/net/ipv4/tcp_syncookies; # default
#fi;

#echo "0" >  /proc/sys/net/ipv6/tcp_syncookies;

# We have also learned that window scaling can be an option to enlarge the transfer
# window. However, benchmarks have shown that window scaling is not suited for systems
# experiencing very high network load. Additionally, some network devices do not follow the
# RFC guidelines and could cause window scaling to malfunction. We suggest disabling
# window scaling and manually setting the window sizes.

# sysctl -w net.ipv4.tcp_window_scaling=1
#echo "1" > /proc/sys/net/ipv4/tcp_window_scaling; # default

# log and drop "martian" packets

#for i in /proc/sys/net/ipv4/conf/*; do
#         /bin/echo "1" >  $i/log_martians
#done # does not get applied - FIXME

# echo "1" > /proc/sys/net/ipv4/conf/all/log_martians

# enable reverse path-filtering  [prevents IP-Spoofing]
#for i in /proc/sys/net/ipv4/conf/*; do
#         /bin/echo "1" >  $i/rp_filter
#done # does not get applied - FIXME

#echo "1" > /proc/sys/net/ipv4/conf/all/rp_filter # not enabled by default # uncomment for enhanced security & NOT using VPN (breaks VPN functionality)

# disable  IP dynaddr
sysctl -w net.ipv4.ip_dynaddr=0;
#echo "0" > /proc/sys/net/ipv4/ip_dynaddr; # default




# For HSDPA low throughput
# setprop ro.ril.disable.power.collapse = 1


setprop ro.telephony.call_ring.delay 1000; # let's minimize the time Android waits until it rings on a call
#setprop ro.ril.disable.power.collapse 0;
setprop pm.sleep_mode 1;
setprop debug.sf.hw 1;  # HARDWARE RENDERING (GPU) 
setprop video.accelerate.hw 1;
setprop debug.performance.tuning 1;
#setprop dalvik.vm.startheapsize 8m;
setprop dalvik.vm.heapsize 48m; # leave that setting to cyanogenmod settings or uncomment it if needed
setprop wifi.supplicant_scan_interval 60; # higher is not recommended, scans while not connected anyway so shouldn't affect while connected
setprop windowsmgr.max_events_per_sec 60; # smoother GUI
#echo 64000 > /proc/sys/kernel/msgmni;

sysctl -w kernel.sem=500,512000,100,2048;
#if [ -e /proc/sys/kernel/sem ];
#then
#	echo 500 512000 100 2048 > /proc/sys/kernel/sem; # allow more semaphores
#fi;
sysctl -w kernel.shmmax=268435456;
#if [ -e /proc/sys/kernel/shmmax ];
#then
#	echo 268435456 > /proc/sys/kernel/shmmax; # Increased max shared memory segment
#fi;
sysctl -w kernel.msgmni=1024;
#if [ -e /proc/sys/kernel/msgmni ];
#then
#	echo 1024 > /proc/sys/kernel/msgmni;
#fi;


#echo 5000 > /proc/sys/kernel/threads-max;
sysctl -w kernel.hung_task_timeout_secs=30;
#echo 30 > /proc/sys/kernel/hung_task_timeout_secs;


#media.stagefright.enable-player=true
#media.stagefright.enable-meta=true
#media.stagefright.enable-scan=true
#media.stagefright.enable-http=true


# CFS options moved elsewhere!
#if [ -e /proc/sys/kernel/rr_interval ];
#then
	# BFS;
#	echo 6 > /proc/sys/kernel/rr_interval;
#	echo 75 > /proc/sys/kernel/iso_cpu;
#else
	# CFS
	# following 2 settings are to be handled with care - could lead to bootlooping phone or other issues if too low !
	#echo 100000 > /proc/sys/kernel/sched_latency_ns; # 1000000 # 18000000 # 1000000 # 100000 ## new
	#echo 500000 > /proc/sys/kernel/sched_wakeup_granularity_ns	; # 500000 # 3000000 # 25000 # 0 (?)
	#echo 750000 > /proc/sys/kernel/sched_min_granularity_ns; # 1000000 # 1500000 # 100000 # 1000000 ## 750000 (upstream)
	#echo 200000 > /proc/sys/kernel/sched_min_granularity_ns; # 1000000 # 1500000 # 100000 # 1000000 ## 750000 (upstream)
	#echo 400000 > /proc/sys/kernel/sched_latency_ns; # 1000000 # 18000000 # 1000000 # 100000 ## new
	#echo 100000 > /proc/sys/kernel/sched_wakeup_granularity_ns	; # 500000 # 3000000 # 25000 # 0 (?)
	#echo -1 > /proc/sys/kernel/sched_rt_runtime_us; 
	#echo 100000 > /proc/sys/kernel/sched_rt_period_us;
	#echo 95000 > /proc/sys/kernel/sched_rt_runtime_us; # default: 950000; very small values in sched_rt_runtime_us can result in an unstable system when the runtime is so small 
		      # the system has difficulty making forward progress (the migration thread and kstopmachine both are real-time processes)
#fi;



#echo "now disabling GENTLE_FAIR_SLEEPERS"
echo "NO_GENTLE_FAIR_SLEEPERS" > /sys/kernel/debug/sched_features;
#cat /sys/kernel/debug/sched_features
#echo "done"
#echo ""
#echo "now disabling FAIR_SLEEPERS"
echo "NO_NEW_FAIR_SLEEPERS" > /sys/kernel/debug/sched_features;
#cat /sys/kernel/debug/sched_features
#echo "done"
#echo "now disabling NORMALIZED_SLEEPERS"
echo "NO_NORMALIZED_SLEEPER" > /sys/kernel/debug/sched_features;
#cat /sys/kernel/debug/sched_features
#echo "done"
#if [ -e /proc/sys/kernel/sched_features ]
#then
#	echo "24319" > /proc/sys/kernel/sched_features;
#fi;



#echo "now disabling FAIR_SLEEPERS"
#echo "NO_NEW_FAIR_SLEEPERS" > /sys/kernel/debug/sched_features
#cat /sys/kernel/debug/sched_features
#echo "done"
#echo ""
#echo "now disabling START_DEBIT"
#echo "NO_START_DEBIT" > /sys/kernel/debug/sched_features
#cat /sys/kernel/debug/sched_features
#echo "done"
#echo ""
#echo "now disabling LB_BIAS"
#echo "NO_LB_BIAS" > /sys/kernel/debug/sched_features
#cat /sys/kernel/debug/sched_features
#echo "done"
#echo ""

#echo "now disabling NEXT_BUDDY"
#echo "NO_NEXT_BUDDY" > /sys/kernel/debug/sched_features
#cat /sys/kernel/debug/sched_features
#echo "done"
#echo ""

#echo "now enabling sched_child_runs_first"
#echo "1" > /proc/sys/kernel/sched_child_runs_first
#cat /proc/sys/kernel/sched_child_runs_first
#echo "done"
#echo ""




#for opt in DYN_MIN_VRUNTIME \
#        NO_FAIR_SLEEPERS FAIR_SLEEPERS_INTERACTIVE FAIR_SLEEPERS_TIMER \
#        INTERACTIVE TIMER \
#        INTERACTIVE_FORK_EXPEDITED TIMER_FORK_EXPEDITED;
#do echo $opt > /sys/kernel/debug/sched_features;
#done

#echo "low-latency for CFS activated ..."
#echo "done"




#MAX_PHONE() 
#{
#pidphone=`pidof com.android.phone`;
#if [ $pidphone ]; # Wait for com.android.phone to start;
#then#
#	echo -17 > /proc/$pidphone/oom_adj; # exclude com.android.phone from oom-killer;
#	renice -20 $pidphone; # set highest nice level for com.android.phone;
##	log -p i -t SSSwitch_v0.8 "*** MAX phone *** set oom_adj(-17) and nice(-20) for com.android.phone";
#	exit;
#else
#	sleep 5;
#	MAX_PHONE;
#fi;
#}



#(while [ 1 ];
#do
#	sleep 10;
#	MAX_PHONE;
#done &);



#KSWAPD_RENICE() 
#{
#pidkswapd=`pidof kswapd0`;
#if [ $pidkswapd ]; # Wait for kswapd to be available;
#then
#	renice 19 $pidkswapd; # set kswapd lowest nice level possible;
#	exit;
#else
#	sleep 5;
#	KSWAPD_RENICE;
#fi;
#}



#(while [ 1 ];
#do
#	sleep 10;
#	KSWAPD_RENICE;
#done &);


#!/system/bin/sh
#
# 
#
rm -r /data/local/tmp/*
rm -r /data/tmp/*
rm -r /data/system/usagestats/*
rm -r /data/system/appusagestats/*
rm -r /data/system/dropbox/*
rm -r /data/tombstones/*
rm -r /data/anr/*
busybox chmod 000 /data/system/userbehavior.db
busybox chmod 000 /data/system/usagestats/
busybox chmod 000 /data/system/dropbox/
busybox chmod 000 /data/anr/
busybox chmod 000 /data/tombstones/
busybox chmod 000 /data/system/appusagestats/
busybox chmod 000 /data/data/com.google.android.location/files/cache.cell
busybox chmod 000 /data/data/com.google.android.location/files/cache.wifi

# Allow configuring of both cores
#echo "1" > /sys/devices/system/cpu/cpu0/online;
#echo "1" > /sys/devices/system/cpu/cpu1/online;

# Remount each file system with noatime and nodiratime flags to save battery and CPU cycles
# and change journaling mode for data and cache
#
busybox mount -o remount,noatime,nodiratime,remount,rw,barrier=0,data=writeback /data;
busybox mount -o remount,noatime,nodiratime,remount,rw,barrier=0,data=writeback /cache;
busybox mount -o remount,noatime,nodiratime /dev;
busybox mount -o remount,noatime,nodiratime /proc;
busybox mount -o remount,noatime,nodiratime /sys;
busybox mount -o remount,noatime,nodiratime /system;




MMC=`ls -d /sys/block/mmc*`;
for q in $MMC
do
#	echo "deadline" > $q/queue/scheduler;
#	echo "512" > $q/queue/read_ahead_kb;
	echo "0" > $q/queue/rotational;
	echo "1" > $q/queue/iosched/fifo_batch;
	echo "1" > $q/queue/iosched/low_latency;
	echo "1" > $q/queue/iosched/back_seek_penalty;
	echo "1000000000" > $q/queue/iosched/back_seek_max;
	echo "3" > $q/queue/iosched/slice_idle; 
	echo "16" > $q/queue/iosched/quantum
	echo "512" > $q/queue/nr_requests;
done

echo "2048" > /sys/devices/virtual/bdi/179:0/read_ahead_kb; # Set sd card read ahead cache size

#
# END SECTION--------------


# /proc/sys/net/ipv4
sysctl -w net.ipv4.tcp_timestamps=0;
sysctl -w net.ipv4.tcp_tw_reuse=1;
sysctl -w net.ipv4.tcp_tw_recycle=1;
sysctl -w net.ipv4.tcp_sack=1;
sysctl -w net.ipv4.tcp_window_scaling=1;
sysctl -w net.ipv4.tcp_keepalive_probes=5; # Retries before connection is considered dead
sysctl -w net.ipv4.tcp_keepalive_intvl=156; # 
sysctl -w net.ipv4.tcp_fin_timeout=30;
sysctl -w net.ipv4.tcp_rmem='6144	87380 524288'; # 65536	131072 524288
sysctl -w net.ipv4.tcp_wmem='6144	131072 524288'; # 65536	131072 524288
sysctl -w net.ipv4.tcp_ecn=0; # Explict Congestion Notification
sysctl -w net.ipv4.tcp_max_tw_buckets=360000; # 
sysctl -w net.ipv4.tcp_synack_retries=2; #Default: 5

# Ignore all icmp packets or pings
sysctl -w net.ipv4.icmp_echo_ignore_all=1;
sysctl -w net.ipv6.icmp_echo_ignore_all=1;

# Net Core Settings
# Location: /proc/sys/net/core
sysctl -w net.core.wmem_max=524288; #404480
sysctl -w net.core.rmem_max=524288; #404480
sysctl -w net.core.rmem_default=110592;
sysctl -w net.core.wmem_default=110592;

#
sysctl -w net.ipv4.route.flush=1;


# Kernel Tweaks
#
sysctl -w kernel.sched_features=15834233;
#sysctl -w kernel.msgmni=2048;
#sysctl -w kernel.msgmax=64000;
#sysctl -w kernel.shmmax=268435500;
#sysctl -w kernel.sem=500,512000,64,2048;
#sysctl -w kernel.hung_task_timeout_secs=0;
#sysctl -w kernel.sched_latency_ns=5000000; #600000
#sysctl -w kernel.sched_compat_yield=1;
#sysctl -w kernel.sched_shares_ratelimit=256000;
#sysctl -w kernel.sched_child_runs_first=0;
#sysctl -w kernel.threads-max=10000;

#!/system/bin/sh
# build.prop tweaks
setprop dalvik.vm.execution-mode=int:jit
setprop persist.sys.purgeable_assets=1
setprop dalvik.vm.dexopt-flags=m=y
setprop ro.media.enc.jpeg.quality=90
setprop dalvik.vm.heapsize=48m
setprop ro.telephony.call_ring.delay=0
setprop debug.performance.tuning=1
setprop ro.ril.disable.power.collapse=0
setprop pm.sleep_mode=1
setprop video.accelerate.hw=1
setprop windowsmgr.max_events_per_sec=180
setprop ro.ril.disable.power.collapse=1
setprop wifi.supplicant_scan_interval=150
setprop mot.proximity.delay=150
setprop persist.sys.shutdown.mode=hibernate
setprop ro.ext4fs=1
setprop ro.config.hwfeature_wakeupkey=0
setprop dalvik.vm.startheapsize=4
setprop ro.kernel.android.checkjni=0
setprop ro.ril.hsxpa=0
setprop ro.ril.hsupa.category=6;
setprop ro.ril.hsdpa.category=8;
setprop ro.ril.enable.dtm=1;
setprop ro.ril.enable.a53=1;
setprop ro.ril.enable.3g.prefix=1;
setprop keyguard.no_require_sim=true;
setprop net.tcp.buffersize.default=4096,87380,256960,4096,16384,256960;
setprop net.tcp.buffersize.wifi=4096,87380,256960,4096,16384,256960;
setprop net.tcp.buffersize.umts=4096,87380,256960,4096,16384,256960;
setprop net.tcp.buffersize.edge=4096,87380,256960,4096,16384,256960;
setprop net.tcp.buffersize.gprs=4096,87380,256960,4096,16384,256960;
setprop windowsmgr.support_rotation_270=true;
setprop ro.mot.eri.losalert.delay=000;
setprop ro.lge.proximity.delay=25;
setprop ro.media.dec.jpeg.memcap=20000000;

#!/system/bih/sh


echo 0 > /proc/sys/net/ipv4/tcp_timestamps;
echo 0 > /proc/sys/net/ipv4/tcp_tw_recycle;
echo 1 > /proc/sys/net/ipv4/tcp_tw_reuse;
echo 1 > /proc/sys/net/ipv4/tcp_sack;
echo 1 > /proc/sys/net/ipv4/tcp_window_scaling;
echo 5 > /proc/sys/net/ipv4/tcp_keepalive_probes;
echo 20 > /proc/sys/net/ipv4/tcp_keepalive_intvl;
echo 1800 > /proc/sys/net/ipv4/tcp_keepalive_time;
echo 30 > /proc/sys/net/ipv4/tcp_fin_timeout;
echo 404480 > /proc/sys/net/core/wmem_max;
echo 404480 > /proc/sys/net/core/rmem_max;
echo 256960 > /proc/sys/net/core/rmem_default;
echo 256960 > /proc/sys/net/core/wmem_default;
echo 4096 16384 404480 > /proc/sys/net/ipv4/tcp_wmem;
echo 4096 87380 404480 > /proc/sys/net/ipv4/tcp_rmem;


#battery tweaks (sleepers)
mount -t debugfs none /sys/kernel/debug
echo NO_NEW_FAIR_SLEEPERS > /sys/kernel/debug/sched_features;
echo NO_NORMALIZED_SLEEPERS > /sys/kernel/debug/sched_features;
umount /sys/kernel/debug


#battery tweaks (vm)
echo 0 > /proc/sys/vm/laptop_mode;
echo 500 > /proc/sys/vm/dirty_expire_centisecs;
echo 1000 > /proc/sys/vm/dirty_writeback_centisecs;
echo 60 > /proc/sys/vm/dirty_ratio;
echo 45 > /proc/sys/vm/dirty_background_ratio;


#vm management tweaks
echo 0 > /proc/sys/vm/panic_on_oom;
echo 0 > /proc/sys/vm/overcommit_memory;
echo 0 > /proc/sys/vm/oom_kill_allocating_task;
echo 3 > /proc/sys/vm/page-cluster;
echo 10 > /proc/sys/vm/swappiness;
echo 50 > /proc/sys/vm/vfs_cache_pressure; #default value=100. low value can cause memory leak, high value drains more battery
echo 2896 > /proc/sys/vm/min_free_kbytes;

#default value for /proc/sys/vm/min_free_kbytes
# RAM		min_free_kbytes
# 16MB		512k
# 32MB		724k
# 64MB		1024k
# 128MB		1448k
# 256MB		2048k
# 512MB		2896k
# 1024MB	4096k
# 2048MB	5792k
# 4096MB	8192k
# 8192MB	11584k


#kernel tweaks
#echo 1 > /proc/sys/kernel/panic_on_oops;
#echo 60 > /proc/sys/kernel/panic;
echo 0 > /proc/sys/kernel/panic_on_oops;
echo 30 > /proc/sys/fs/lease-break-time;
#echo 64000 > /proc/sys/kernel/msgmni; #1024
#echo 64000 > /proc/sys/kernel/msgmax;
#echo 1000000 > /proc/sys/kernel/sched_rt_period_us;
#echo 950000 > /proc/sys/kernel/sched_rt_runtime_us;
echo 500 512000 64 2048 > /proc/sys/kernel/sem;

if [ -e /proc/sys/kernel/sched_min_granularity_ns ]
then
	echo 200000 > /proc/sys/kernel/sched_min_granularity_ns;
fi

if [ -e /proc/sys/kernel/sched_latency_ns ]
then
	echo 400000 > /proc/sys/kernel/sched_latency_ns;
fi

if [ -e /proc/sys/kernel/sched_wakeup_granularity_ns ]
then
	echo 100000 > /proc/sys/kernel/sched_wakeup_granularity_ns;
fi

if [ -e /proc/sys/kernel/hung_task_timeout_secs ]
then
	echo 45 > /proc/sys/kernel/hung_task_timeout_secs;s
#(busybox expr `cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_transition_latency` \* 750 / 1000);
#echo $SAMPLING_RATE > /sys/devices/system/cpu/cpu0/cpufreq/ondemand/sampling_rate;
#echo 10000 > /sys/devices/system/cpu/cpu0/cpufreq/ondemand/sampling_rate;
echo 70 > /sys/devices/system/cpu/cpu0/cpufreq/ondemand/up_threshold;


#optimize build.prop
#setprop ro.ril.hsxpa 2; #HSDPA/UMTS? I think this one gonna drain more and more battery
#setprop ro.ril.hsxpa 1; #HSDPA only? hmm I think this one drain more battery than UMTS only
setprop ro.ril.hsxpa 0; #UMTS only? slower but I think this one drain less battery
setprop ro.ril.gprsclass 10;
setprop ro.ril.hsupa.category 6;
setprop ro.ril.hsdpa.category 8;
setprop ro.ril.hep 1;
setprop ro.ril.enable.dtm 1;
setprop ro.ril.enable.a53 1;
setprop ro.ril.enable.3g.prefix 1;
setprop keyguard.no_require_sim true;
setprop net.tcp.buffersize.default 4096,87380,256960,4096,16384,256960;
setprop net.tcp.buffersize.wifi 4096,87380,256960,4096,16384,256960;
setprop net.tcp.buffersize.umts 4096,87380,256960,4096,16384,256960;
setprop net.tcp.buffersize.edge 4096,87380,256960,4096,16384,256960;
setprop net.tcp.buffersize.gprs 4096,87380,256960,4096,16384,256960;

setprop windowsmgr.support_rotation_270 true;
setprop ro.mot.eri.losalert.delay 1000;
setprop ro.lge.proximity.delay 25;
setprop mot.proximity.delay 25;
setprop persist.sys.use_dithering 0;
setprop persist.sys.purgeable_assets 1;
setprop ro.media.dec.jpeg.memcap 20000000;
setprop ro.media.enc.jpeg.quality 100;
setprop ro.HOME_APP_ADJ 1;
setprop ro.HOME_APP_MEM 2048;
;
setprop video.accelerate.hw 1;
setprop media.stagefright.enable-player true;
setprop ro.ril.disable.power.collapse 0;
setprop persist.adb.notify 0;
setprop pm.sleep_mode 1;
setprop debug.sf.hw 1;
setprop debug.performance.tuning 1;
setprop dalvik.vm.execution-mode int:jit
#untested
#setprop ro.kernel.android.checkjni 0; #does it really fix some apps issue? http://forum.xda-developers.com/archive/index.php/t-1253326.html
#setprop ro.mot.buttonlight.timeout 0; #force button lights on when screen is on


#END

#*******************************#
#         Geeky Engine          #
#         -------------         #
#      By Forever king@ xda     #
#-------------------------------#